In a complex computing environment, determining the root cause of a performance issue is difficult and time consuming. For example, the scale and complexity involved in a virtualized environment having large numbers of software and hardware components, as well as multiple physical and virtual machines generating heterogeneous workloads, results in large amounts of performance metrics data. Additionally, interactions between components and/or machines cause a high degree of variance. For example, in a distributed virtual storage area network (VSAN), a poorly performing disk on one host may result in highly varying guest application throughput because the throughput is dependent upon which of the distributed disks in the VSAN is targeted by each input/output (I/O) request.
In trying to determining the root cause of a performance issue, any information that is irrelevant to the problem is considered noise. Differentiating noise from root causes in such large amounts of varying performance statistics contributes to the difficulty and amount of time needed to determine a root cause. If the noise is not filtered out, however, it becomes impractical to establish a performance baseline and determine whether or not a performance issue is present in a particular set of performance statistics. Furthermore, one performance issue may overlap and effectively mask another performance issue. Isolating these overlapping performance issues increases the difficulty in troubleshooting and debugging. With this level of difficulty and delay in detecting root causes, the generation of a solution to the performance issue(s) can be delayed beyond the ever-shortening development cycle for a given set of products.